/*
   Pack Date
   Simple code shows how to pack a date to a 32bit int value and then unpack it again
   By DreamVB
*/

#include <iostream>

using namespace std;
using std::endl;

void PackDate(int d, int m , int y, int &Value){
	Value = (d << 16) |(m<<8) | y-1900;
}

void UnpackDate(int &d, int &m, int &y, int Value){
	d = (Value >> 16);
	m = (Value >> 8) & 0xff;
	y = (Value & 0xff) + 1900;
}

int main(int argc, char *argv[])
{
	int d = 0;
	int m = 0;
	int yr = 0;
	int value = 0;
	//Pack date
	PackDate(20,2,1977,value);

	cout << "Date to pack : 20/02/1977" << endl;
	cout << "Packed date  : " << value << endl;
	//Unpack date
	UnpackDate(d,m,yr,value);
	cout << "Unpacked     : ";
	//Display unpacked date
	cout << d << "/" << m << "/" << yr << endl;

	system("pause");
}
